# coding: utf-8
require File.expand_path(File.join('../', 'spec_helper'), File.dirname(__FILE__))

# http://azunyan.sitemix.jp/kunkakunka/kunkakunka.php
describe Kunkakunka do
  context '.do' do
    subject { Kunkakunka.do }

    it { should match /^ルイズ！ルイズ！ルイズ！ルイズぅぅうううわぁああああああああああああああああああああああん！！！/ }
    it { should match /俺の想いよルイズへ届け！！ハルケギニアのルイズへ届け！$/ }
  end

  context '.do with params' do
    subject { Kunkakunka.do(name: 'さくら', location: '友枝小学校') }

    it { should match /^さくら！さくら！さくら！さくらぁぁあああわぁああああああああああああああああああああああん！！！/ }
    it { should match /俺の想いよさくらへ届け！！友枝小学校のさくらへ届け！$/ }
  end

  context '.do' do
    subject { Kunkakunka.create.to_s }

    it { should match /^ルイズ！ルイズ！ルイズ！ルイズぅぅうううわぁああああああああああああああああああああああん！！！/ }
    it { should match /俺の想いよルイズへ届け！！ハルケギニアのルイズへ届け！$/ }
  end
end

describe Kunkakunka::Text do
  context '.new with params' do
    before do
      @text = Kunkakunka::Text.new(
        name: 'あずさ',
        full_name: '中野梓',
        hair_color: '黒色ストレート',
        novel: '連載',
        n_vol: '10月号',
        anime: '映画',
        season: 'けいおん！',
        comics: 'マンガ',
        c_vol: '4巻',
        location: '桜高',
        other1: 'ゆい',
        other2: 'みお',
        other3: 'りつ',
        other4: 'むぎ',
        other5: 'さわ子',
        strip_newline: false
      )
    end

    subject { @text.to_s }

    it { should == %q(あずさ！あずさ！あずさ！あずさぁぁあああわぁああああああああああああああああああああああん！！！
あぁああああ…ああ…あっあっー！あぁああああああ！！！あずさあずさあずさぁああぁわぁああああ！！！
あぁクンカクンカ！クンカクンカ！スーハースーハー！スーハースーハー！いい匂いだなぁ…くんくん
んはぁっ！中野梓たんの黒色ストレートの髪をクンカクンカしたいお！クンカクンカ！あぁあ！！
間違えた！モフモフしたいお！モフモフ！モフモフ！髪髪モフモフ！カリカリモフモフ…きゅんきゅんきゅい！！
連載10月号のあずさたんかわいかったよぅ！！あぁぁああ…あああ…あっあぁああああ！！ふぁぁあああんんっ！！
映画けいおん！決まって良かったねあずさたん！あぁあああああ！かわいい！あずさたん！かわいい！あっああぁああ！
マンガ4巻も発売されて嬉し…いやぁああああああ！！！にゃああああああああん！！ぎゃああああああああ！！
ぐあああああああああああ！！！マンガなんて現実じゃない！！！！あ…連載も映画もよく考えたら…
あ ず さ ち ゃ ん は 現実 じ ゃ な い？にゃあああああああああああああん！！うぁああああああああああ！！
そんなぁああああああ！！いやぁぁぁあああああああああ！！はぁああああああん！！桜高ぁああああ！！
この！ちきしょー！やめてやる！！現実なんかやめ…て…え！？見…てる？表紙絵のあずさちゃんが僕を見てる？
表紙絵のあずさちゃんが僕を見てるぞ！あずさちゃんが僕を見てるぞ！挿絵のあずさちゃんが僕を見てるぞ！！
映画のあずさちゃんが僕に話しかけてるぞ！！！よかった…世の中まだまだ捨てたモンじゃないんだねっ！
いやっほぉおおおおおおお！！！僕にはあずさちゃんがいる！！やったよゆい！！ひとりでできるもん！！！
あ、マンガのあずさちゃああああああああああああああん！！いやぁあああああああああああああああ！！！！
あっあんああっああんあみおぉお！！り、りつ！！むぎぃいいいいいい！！！さわ子ぁあああ！！
ううっうぅうう！！俺の想いよあずさへ届け！！桜高のあずさへ届け！) }

  end

  context '.gaspize' do
    it 'given "あかさたな".' do
      Kunkakunka::Text.gaspize("あかさたな").should == 'あかさたなぁぁあああ'
    end

    it 'given "いきしちに".' do
      Kunkakunka::Text.gaspize("いきしちに").should == 'いきしちにぃぃいいい'
    end

    it 'given "うくすつぬ".' do
      Kunkakunka::Text.gaspize("うくすつぬ").should == 'うくすつぬぅぅううう'
    end

    it 'given "えけせてね".' do
      Kunkakunka::Text.gaspize("えけせてね").should == 'えけせてねぇぇえええ'
    end

    it 'given "おこそとの".' do
      Kunkakunka::Text.gaspize("おこそとの").should == 'おこそとのぉぉおおお'
    end
  end

  context '.emphaize' do
    it 'given "ルイズ".' do
      Kunkakunka::Text.emphaize("ルイズ").should == 'ル イ ズ'
    end
  end

  describe 'when original values,' do
    before do
      @text = Kunkakunka::Text.new
    end

    context '#template' do
      subject { @text.template }

      it { should match /^%name%！%name%！%name%！%name_with_gasp1%/ }
    end

    context '#to_s' do
      subject { @text.to_s }

        it { should == %q(ルイズ！ルイズ！ルイズ！ルイズぅぅうううわぁああああああああああああああああああああああん！！！
あぁああああ…ああ…あっあっー！あぁああああああ！！！ルイズルイズルイズぅううぁわぁああああ！！！
あぁクンカクンカ！クンカクンカ！スーハースーハー！スーハースーハー！いい匂いだなぁ…くんくん
んはぁっ！ルイズ・フランソワーズたんの桃色ブロンドの髪をクンカクンカしたいお！クンカクンカ！あぁあ！！
間違えた！モフモフしたいお！モフモフ！モフモフ！髪髪モフモフ！カリカリモフモフ…きゅんきゅんきゅい！！
小説11巻のルイズたんかわいかったよぅ！！あぁぁああ…あああ…あっあぁああああ！！ふぁぁあああんんっ！！
アニメ2期決まって良かったねルイズたん！あぁあああああ！かわいい！ルイズたん！かわいい！あっああぁああ！
コミック2巻も発売されて嬉し…いやぁああああああ！！！にゃああああああああん！！ぎゃああああああああ！！
ぐあああああああああああ！！！コミックなんて現実じゃない！！！！あ…小説もアニメもよく考えたら…
ル イ ズ ち ゃ ん は 現実 じ ゃ な い？にゃあああああああああああああん！！うぁああああああああああ！！
そんなぁああああああ！！いやぁぁぁあああああああああ！！はぁああああああん！！ハルケギニアぁああああ！！
この！ちきしょー！やめてやる！！現実なんかやめ…て…え！？見…てる？表紙絵のルイズちゃんが僕を見てる？
表紙絵のルイズちゃんが僕を見てるぞ！ルイズちゃんが僕を見てるぞ！挿絵のルイズちゃんが僕を見てるぞ！！
アニメのルイズちゃんが僕に話しかけてるぞ！！！よかった…世の中まだまだ捨てたモンじゃないんだねっ！
いやっほぉおおおおおおお！！！僕にはルイズちゃんがいる！！やったよケティ！！ひとりでできるもん！！！
あ、コミックのルイズちゃああああああああああああああん！！いやぁあああああああああああああああ！！！！
あっあんああっああんあアン様ぁあ！！セ、セイバー！！シャナぁああああああ！！！ヴィルヘルミナぁあああ！！
ううっうぅうう！！俺の想いよルイズへ届け！！ハルケギニアのルイズへ届け！) }
      it { should match /^ルイズ！ルイズ！ルイズ！ルイズぅぅうううわぁああああああああああああああああああああああん！！！/ }
      it { should match /俺の想いよルイズへ届け！！ハルケギニアのルイズへ届け！$/ }
    end

    describe 'when with strip_newline option,' do
      before do
        @text = Kunkakunka::Text.new {|t|
          t.strip_newline = true
        }
      end

      context '#to_s' do
        subject { @text.to_s }

        it { should == %q(ルイズ！ルイズ！ルイズ！ルイズぅぅうううわぁああああああああああああああああああああああん！！！あぁああああ…ああ…あっあっー！あぁああああああ！！！ルイズルイズルイズぅううぁわぁああああ！！！あぁクンカクンカ！クンカクンカ！スーハースーハー！スーハースーハー！いい匂いだなぁ…くんくんんはぁっ！ルイズ・フランソワーズたんの桃色ブロンドの髪をクンカクンカしたいお！クンカクンカ！あぁあ！！間違えた！モフモフしたいお！モフモフ！モフモフ！髪髪モフモフ！カリカリモフモフ…きゅんきゅんきゅい！！小説11巻のルイズたんかわいかったよぅ！！あぁぁああ…あああ…あっあぁああああ！！ふぁぁあああんんっ！！アニメ2期決まって良かったねルイズたん！あぁあああああ！かわいい！ルイズたん！かわいい！あっああぁああ！コミック2巻も発売されて嬉し…いやぁああああああ！！！にゃああああああああん！！ぎゃああああああああ！！ぐあああああああああああ！！！コミックなんて現実じゃない！！！！あ…小説もアニメもよく考えたら…ル イ ズ ち ゃ ん は 現実 じ ゃ な い？にゃあああああああああああああん！！うぁああああああああああ！！そんなぁああああああ！！いやぁぁぁあああああああああ！！はぁああああああん！！ハルケギニアぁああああ！！この！ちきしょー！やめてやる！！現実なんかやめ…て…え！？見…てる？表紙絵のルイズちゃんが僕を見てる？表紙絵のルイズちゃんが僕を見てるぞ！ルイズちゃんが僕を見てるぞ！挿絵のルイズちゃんが僕を見てるぞ！！アニメのルイズちゃんが僕に話しかけてるぞ！！！よかった…世の中まだまだ捨てたモンじゃないんだねっ！いやっほぉおおおおおおお！！！僕にはルイズちゃんがいる！！やったよケティ！！ひとりでできるもん！！！あ、コミックのルイズちゃああああああああああああああん！！いやぁあああああああああああああああ！！！！あっあんああっああんあアン様ぁあ！！セ、セイバー！！シャナぁああああああ！！！ヴィルヘルミナぁあああ！！ううっうぅうう！！俺の想いよルイズへ届け！！ハルケギニアのルイズへ届け！) }
      end
    end
  end

  describe 'when custom values,' do
    before do
      @text = Kunkakunka::Text.new {|t|
        t.name = 'あずさ'
        t.location = '桜高'
      }
    end

    context '#to_s' do
      subject { @text.to_s }

      it { should match /^あずさ！あずさ！あずさ！あずさぁぁあああわぁああああああああああああああああああああああん！！！/ }
      it { should match /俺の想いよあずさへ届け！！桜高のあずさへ届け！$/ }
    end
  end
end
